From: Adel Gadllah Date: Wed, 12 May 2010 07:35:32 +0000 (+0200) Subject: Use gdk_screen_get_primary_monitor on gtk-2.20.1+ X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~10099 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=410dfb2da307d5a30976fb596f1edb7784165a54;p=gnome-shell.git Use gdk_screen_get_primary_monitor on gtk-2.20.1+ Starting with gtk-2.20.0 there is a gdk_screen_get_primary_monitor, which supports querying the primary monitor from xrandr. But due to a sorting bug and lack of heuristics in the fallback path, it isn't really useable. Those bugs are fixed in gtk-2.20.1, so use it when building with gtk-2.20.1+. https://bugzilla.gnome.org/show_bug.cgi?id=608647 --- diff --git a/src/shell-global.c b/src/shell-global.c index 2228ef40e..59db2032e 100644 --- a/src/shell-global.c +++ b/src/shell-global.c @@ -1117,7 +1117,14 @@ shell_global_get_primary_monitor (ShellGlobal *global) { GdkScreen *screen = gdk_screen_get_default (); GdkRectangle rect; - gint i, primary = 0; + gint primary = 0; + + /* gdk_screen_get_primary_monitor is only present in gtk-2.20+ + * and is in a useable state (supports heuristics and fallback modes) + * starting with 2.20.1 + */ +#if !GTK_CHECK_VERSION (2, 20, 1) + gint i; gchar *output_name = NULL; gint num_monitors = gdk_screen_get_n_monitors (screen); @@ -1136,6 +1143,9 @@ shell_global_get_primary_monitor (ShellGlobal *global) } } } +#else + primary = gdk_screen_get_primary_monitor (screen); +#endif gdk_screen_get_monitor_geometry (screen, primary, &rect);